/*
 * 文 件 名:  JsonUtils.java
 * 版    权:  Huawei Technologies Co., Ltd. Copyright YYYY-YYYY,  All rights reserved
 * 描    述:  <描述>
 * 修 改 人:  卢慧 55318
 * 修改时间:  2017年11月1日
 * 跟踪单号:  <跟踪单号>
 * 修改单号:  <修改单号>
 * 修改内容:  <修改内容>
 */
package gov.ccswj.modules.job.utils;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

/**
 * <一句话功能简述>
 * <功能详细描述>
 * 
 * @author  姓名 工号
 * @version  [版本号, 2017年11月1日]
 * @see  [相关类/方法]
 * @since  [产品/模块版本]
 */
public class JsonUtils {
    
    /**
     * 返回json 数据转换为 实体类
     * @param jsonStr  json字符串数据
     * @param className 要转化的实体类名字
     * @return
     */
    public static List<Object> getdate(String jsonStr,Class className) {
        JSONObject json = JSONObject.fromObject(jsonStr);
        JSONArray resultData = (JSONArray) json.get("RESULTDATA");

        List<Object> entityList = new ArrayList<Object>();
        json2Bean(className, resultData, entityList);
        return entityList;
    }
    
    
    /**
     * 返回json 数据转换为 实体类
     * @param jsonStr  json字符串数据
     * @param className 要转化的实体类名字
     * @return
     */
    public static List<Object> getChattelData(String jsonStr,Class className) {
        JSONObject json = JSONObject.fromObject(jsonStr);
        JSONArray resultData = (JSONArray) json.get("RESULTDATA");
        JSONArray resultData1 = (JSONArray) json.get("MORTGAGEE");
        JSONArray resultData2 = (JSONArray) json.get("RESISTER");
        JSONArray resultData3 = (JSONArray) json.get("SECURED");
        JSONArray resultData4 = (JSONArray) json.get("CHANGE");
        JSONArray resultData5 = (JSONArray) json.get("PAWN");
        JSONArray resultData6 = (JSONArray) json.get("CANCEL");

        List<Object> entityList = new ArrayList<Object>();
        json2Bean(className, resultData1, entityList);
        json2Bean(className, resultData2, entityList);
        json2Bean(className, resultData3, entityList);
        json2Bean(className, resultData4, entityList);
        json2Bean(className, resultData5, entityList);
        json2Bean(className, resultData6, entityList);
        return entityList;
    }


    private static void json2Bean(Class className, JSONArray resultData, List<Object> entityList) {
        if (resultData!=null)
        for (Object jsonObject : resultData) {
            JSONObject jsonstr = JSONObject.fromObject(jsonObject);
            jsonstr = transToLowerObject(jsonstr);
            Object entity = JSONObject.toBean(jsonstr, className);
            entityList.add(entity);
        }
    }

    
    /**
     * * json大写转小写      *       
     * * @param jSONArray1 jSONArray1    
     *  * @return JSONObject      
     */

    public static JSONObject transToLowerObject(JSONObject jSONArray1) {
        JSONObject jSONArray2 = new JSONObject();
        Iterator it = jSONArray1.keys();
        while (it.hasNext()) {
            String key = (String) it.next();
            Object object = jSONArray1.get(key);
            jSONArray2.accumulate(key.toLowerCase(), object);
        }
        return jSONArray2;
    }
    
    
    public static void main(String[] args) {
        String s = "{'ORDERINFO':{'ORDERNO':'171106153518271031552','ORDERDATE':'2017-11-06 15:35:18'},'VERSION':'1.0.1','RESULTDATA':{'MORTGAGEE':[],'RESISTER':[],'SECURED':[{'LXZWJSRQ':'2018-07-16','DBFW':'主债权及利息、违约金、损害赔偿金和实现抵押权等费用','SE':'255.0万元','ZL':'财物债权','LXZWKSRQ':'2017-07-17','BZ':''}],'CHANGE':[],'PAWN':[],'CANCEL':[]},'UID':'bcc9a8b6f5ea4047b3064da563c47dbd'}";
        JsonParser parser = new JsonParser();
        JsonElement root = parser.parse(s);
        JsonObject element = root.getAsJsonObject();
        JsonArray arrayJson = element.getAsJsonArray("SECURED");
        System.out.println(arrayJson);
    }

}
